package com.zrrd.spring_03_annotation.service.impl;

import com.zrrd.spring_03_annotation.mapper.TeaDao;
import com.zrrd.spring_03_annotation.service.TeaService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

/**
 * @author WanJl
 * @version 1.0
 * @title TeaServiceImpl
 * @description
 * @create 2024/10/27
 */
/*
    @Component注解，用来创建被修饰的实现类的对象作为Bean，放到IOC容器。
    注意，我们是为实现类修饰@Component注解。并没有为接口修饰。
    @Component注解，有一个默认的字符串类型属性，如果传入字符串，则这个bean会以该字符串命名。
    如果@Component注解，没有指定Bean名称，那么实现类类名首字母小写，就是Bean在IOC容器中的默认名称。
    比如实现类TeaServiceImpl在没有指定名称的情况下，在IOC容器里的Bean实例默认名称就是 teaServiceImpl
 */
//@Component("abc")
//@Component
//我们一般在service层，会用@Service注解，而不是使用@Component注解
//它们的作用是一样的，使用@Service注解是为了我们更好分层。
@Service
public class TeaServiceImpl implements TeaService {
    /*
        @Autowired 自动装配
        默认是根据变量所属的类型自动从IOC容器中找到Bean实例，然后赋值给它
     */
    @Autowired
    private TeaDao teaDao;

    public void setTeaDao(TeaDao teaDao) {
        this.teaDao = teaDao;
    }

    @Override
    public void method() {
        teaDao.teaDaoMethod();
        System.out.println("TeaServiceImpl method");
    }
}
